/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package s.f.localidad;

import s.f.jndi.ConexionJNDI;
import s.f.util.AppException;
import s.f.util.Conexion;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 * Data Access Object Localidad (Municipios,Estados,Países)
 * @author Froy
 */
public class CRUD_Localidad {

    /**
     * Regresa un Map de los municipios que le corresponden a un Estado.
     * @param cve_ent Solicita una el id del estadoEstado "03"
     * @return Regresa un Map de los registros solicitados por el id del Estado.
     * @throws AppException
     */
    public static Map selectMunicipiobyEstado(String cve_ent) throws AppException {
        String query = "select rid,nom_mun from sf_municipios where cve_ent=?";

        Map m = new HashMap();
        try {
            //Connection con = Conexion.getConnection(); //JDBC
            Connection con = ConexionJNDI.getConnection(); //JNDI
            PreparedStatement ps = con.prepareStatement(query);
            ps.setString(1, cve_ent);
            ResultSet rs = ps.executeQuery();
            
            if (rs.next()) {
                m.put("RID", rs.getInt("rid"));
                m.put("NOM_MUN", rs.getString("nom_mun"));
            }

            Conexion.closeConnection(con);
        } catch (SQLException sqle) {
            throw new AppException("Fallo al recuperar los "
                    + "datos del municipio por estado.", sqle);
        }
        return m;
    }
    
    public static Collection selectPaises() throws AppException {
        ArrayList<Map> mapaSelect = new ArrayList<Map>();
        String query = "select idpais,nombrepais from sf_paises";
        
        try {
            //Connection con = Conexion.getConnection(); JDBC
            Connection con = ConexionJNDI.getConnection(); //JNDI
            PreparedStatement ps = con.prepareStatement(query);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                Map m = new HashMap();
                m.put("RID", rs.getString("idpais"));
                m.put("NOM_PAIS", rs.getString("nombrepais"));
                mapaSelect.add(m);
            }
            Conexion.closeConnection(con);
        } catch (SQLException sqle) {
            throw new AppException("Fallo al recuperar los "
                    + "datos del país.", sqle);
        }
        return mapaSelect;
    }
    
    public static Collection selectEstadosbyPais(int pais) throws AppException {
        ArrayList<Map> mapaSelect = new ArrayList<Map>();
        String query = "select rid,nom_ent from sf_estados where idpais=?"; 
        
        try {
            //Connection con = Conexion.getConnection(); JDBC
            Connection con = ConexionJNDI.getConnection(); //JNDI
            PreparedStatement ps = con.prepareStatement(query);
            ps.setInt(1, pais);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                Map m = new HashMap();
                m.put("RID", rs.getInt("rid"));
                m.put("NOM_ENT", rs.getString("nom_ent"));
                mapaSelect.add(m);
            }
            Conexion.closeConnection(con);
        } catch (SQLException sqle) {
            throw new AppException("Fallo al recuperar los "
                    + "datos del estado por pais.", sqle);
        }
        return mapaSelect;
    }
    
    public static Collection selectMunicipiosbyEstado(int ridestado) throws AppException {
        ArrayList<Map> mapaSelect = new ArrayList<Map>();
        String query = "select rid,nom_mun from sf_municipios where cve_ent=?";
        
        try {
            //Connection con = Conexion.getConnection(); JDBC
            Connection con = ConexionJNDI.getConnection(); //JNDI
            PreparedStatement ps = con.prepareStatement(query);
            ps.setInt(1, ridestado);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                Map m = new HashMap();
                m.put("RID", rs.getInt("rid"));
                m.put("NOM_MUN", rs.getString("nom_mun"));
                mapaSelect.add(m);
            }
            Conexion.closeConnection(con);
        } catch (SQLException sqle) {
            throw new AppException("Fallo al recuperar los "
                    + "datos del municipio por estado.", sqle);
        }
        return mapaSelect;
    }
}
